The invention generally relates to computers and more particularly to providing an I/O bus abstraction for a cluster interconnection fabric.
A cluster may include one or more hosts connected together by an interconnection fabric. In traditional clusters, hosts have locally attached I/O controllers connected to local I/O buses. FIG. 1 illustrates a typical bus-based computer 100, which includes a processor 102 connected to a host (or processor) bus 103 and an I/O and memory controller (or chipset) 104. A local I/O bus 105 may be considered local to computer 100 because, among other factors, it is physically located within the same cabinet as the processor 102 (or within very close proximity to processor 102). Local I/O bus 105 is connected to an I/O bridge 108. Several I/O devices are attached to the local I/O bus 105, including I/O controllers 110 and 112 and a Local Area Network (LAN) Network Interface Card (NIC) 114. The I/O controllers 110 and 112 may be connected to one or more I/O devices, such as storage devices, hard disk drives, or the like. I/O bus 105 is a traditional I/O bus, such as a Peripheral Component Interconnect (PCI bus) a Industry Standard Architecture (ISA) bus or Extended ISA (EISA) bus, etc. A traditional I/O bus provides attachment points to which I/O controllers can be attached.
A bus-based computer, such as that shown in FIG. 1, has a number disadvantages and drawbacks. All of the I/O controllers on the I/O bus share the same power and clock domain and share a common address space. Due to the physical and electrical load limitations, only a relatively small number of I/O controllers may be attached to an I/O bus, and must be physically located within the same cabinet as the processor (or within very close proximity). Thus, the entire I/O bus is physically attached to a single computer system. Also, in traditional clusters, I/O controllers are not directly connected to the network or cluster, but are provided only as part of another host. Thus, the I/O controllers on the I/O bus of a computer system are directly visible (or detectable) and addressable only by that computer system or host, but are not directly visible or addressable to any other host in the cluster.
For example, the I/O controllers 110 and 112 are visible only to computer 100, and are not visible or directly addressable to any other host which may be connected to LAN 120. To allow another host computer on LAN 120 (not shown) to access the I/O controllers 110 and 112 of host 100, the other host on LAN 120 must communicate through the processor 102 and the operating system of host computer 100 (rather than directly to the I/O controllers 110 and 112).
Therefore, bus-based computer systems provide a very inflexible arrangement for I/O resources. As a result, there is a need for a technique that provides a much more flexible arrangement for I/O devices for computer systems.
According to an embodiment of the invention, a host to be coupled to a cluster interconnection fabric including one or more fabric-attached I/O controllers. The host includes a processor, a memory coupled to the processor and an operating system. The operating system includes an I/O bus abstraction for the cluster interconnection fabric.